Barbarian_Macro_LoopInterval = 10  -- 脚本循环间隔（毫秒）
local lastMouseClickTime = 0       -- 记录鼠标左键上次点击时间
local lastSkill3Time = 0           -- 记录禅定（3键）上次释放时间
local lastSkill4Time = 0           -- 记录灵光悟（4键）上次释放时间
local mouseCooldown = 100         -- 鼠标左键冷却时间（100ms）
local skill3Cooldown = 200       -- 禅定冷却5秒（5000ms）
local skill4Cooldown = 300       -- 灵光悟冷却3秒（3000ms）

function OnEvent(event, arg, family)
    -- 鼠标侧键5（前进键）触发宏
    if (event == "MOUSE_BUTTON_RELEASED" and arg == 5) then  
        Barbarian_Macro_FullyAuto()
    end
end

function Barbarian_Macro_FullyAuto()
    if (IsKeyLockOn("capslock")) then
        local wHeld = true   -- 标记强制移动（W键）状态
        local gHeld = false  -- 标记自定义功能键（G键）状态
        PressKey("w")        -- 启动时自动按住强制移动

        while (IsKeyLockOn("capslock")) do
            local currentTime = GetRunningTime()  -- 获取当前时间戳

            -- 1. 自动左键攻击（每100ms触发一次）
            if (currentTime - lastMouseClickTime >= mouseCooldown) then
                PressAndReleaseMouseButton(1)
                lastMouseClickTime = currentTime
                Sleep(50)  -- 短暂延迟防止连点过快
            end

            -- 2. 模式判断：按住CTRL进入战斗模式
            if IsModifierPressed("lctrl") or IsModifierPressed("rctrl") then
                -- 2.1 切换移动状态：释放W键，按住G键
                if wHeld then ReleaseKey("w"); wHeld = false end
                if not gHeld then PressKey("g"); gHeld = true end

                -- 2.2 新版技能循环：3次金钟破（1键） + 2次飓风破（2键）
                -- 金钟破连按3次（每次间隔50ms）
                for i = 1, 3 do
                    PressAndReleaseKey("1")
                    Sleep(25)  -- 按键间隔可调整
                end
                -- 飓风破连按2次（每次间隔50ms）
                for i = 1, 2 do
                    PressAndReleaseKey("2")
                    Sleep(70)  -- 按键间隔可调整
                end

                -- 2.3 保命技能：禅定（3键）冷却检查
                if (currentTime - lastSkill3Time >= skill3Cooldown) then
                    PressAndReleaseKey("3")
                    lastSkill3Time = currentTime
                end

                -- 2.4 核心技能：灵光悟（4键）冷却检查
                if (currentTime - lastSkill4Time >= skill4Cooldown) then
                    PressAndReleaseKey("4")
                    lastSkill4Time = currentTime
                end
            -- 3. 常规移动模式（未按住CTRL时）
            else
                -- 3.1 切换移动状态：释放G键，按住W键
                if gHeld then ReleaseKey("g"); gHeld = false end
                if not wHeld then PressKey("w"); wHeld = true end

                -- 3.2 仅自动释放灵光悟（4键）
                if (currentTime - lastSkill4Time >= skill4Cooldown) then
                    PressAndReleaseKey("4")
                    lastSkill4Time = currentTime
                end
            end

            Sleep(Barbarian_Macro_LoopInterval)  -- 防止CPU占用过高
        end

        -- 退出宏时释放所有按键
        if wHeld then ReleaseKey("w") end
        if gHeld then ReleaseKey("g") end
    end  
end